package gff.actions;



import gff.bsn.CatalogosBsn;
import gff.constantes.Constantes;
import gff.forms.ReglasForm;
import gff.vo.ReglasVO;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class AdmonReglasAction extends DispatchAction {


	public ActionForward inicio(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: inicio  ");
		ActionForward forward = new ActionForward();

		request.getSession().setAttribute("fuentes" ,CatalogosBsn.getListaFuentes());
		request.getSession().setAttribute("unidades",CatalogosBsn.getListaUnidades());

		ReglasForm reglasForm = (ReglasForm) form;

		reglasForm.setIdRegla(String.valueOf(CatalogosBsn.getIdMaxRegla()+1));



		String ruta ="inicioReglas";


		forward = mapping.findForward(ruta);

		return forward;
	}

	public ActionForward validaNombre2(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: validaNombre  ");

		PrintWriter out = null;

		ArrayList<ReglasVO> reglas = new ArrayList<ReglasVO>();

		ReglasVO regla = new ReglasVO();



		String nombre	 	= request.getParameter("descripcion");


		String idReglaL	 		= request.getParameter("idReglaL");
		String fuenteL 			= request.getParameter("fuenteL");
		String estatusReglaL 	= request.getParameter("estatusReglaL");
		String estatusCobroL 	= request.getParameter("estatusCobroL");
		String estatusDispL 	= request.getParameter("estatusDispL");
		String ponderanciaL 	= request.getParameter("ponderanciaL");
		String descripcion  	= request.getParameter("descripcionL");
		String unidadL		  	= request.getParameter("unidadL");
		String buscaL		  	= request.getParameter("buscaL");



		if (buscaL != null && buscaL.equals("1")){
			regla.setLike("");
			regla.setDescripcion(nombre);
		}else{

			regla.setIdRegla(idReglaL);
			regla.setFuente(fuenteL);
			regla.setEstatusRegla(Integer.parseInt(estatusReglaL));
			regla.setEstatusCobro(Integer.parseInt(estatusCobroL));
			regla.setEstatusDispensa(Integer.parseInt(estatusDispL));
			regla.setPonderancia(ponderanciaL);
			regla.setDescripcion(descripcion);
			regla.setUnidad(unidadL);
			regla.setLike("2");

		}

		JSONArray jsonArray = new JSONArray();
		HashMap<String,String> hm = new HashMap<String,String>();

		out = response.getWriter();

		if (CatalogosBsn.listReglaNombre(regla)!= null && CatalogosBsn.listReglaNombre(regla).size()>0){
			hm.put("bandera","true");
			hm.put("banderaP","true");
		}else{

			reglas.add(regla);
			request.getSession().setAttribute("addRegla", reglas);
		}


		JSONObject jsonObj = JSONObject.fromObject(hm);
		jsonArray.add(jsonObj);

		out.print(jsonArray.toString());
		out.flush();
		out.close();



		return null;
	}

	public ActionForward validaNombre(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: validaNombre  ");
		ActionForward forward = new ActionForward();
		request.getSession().removeAttribute("fuentes");
		request.getSession().removeAttribute("unidades");
		request.getSession().removeAttribute("addRegla");

		String ruta ="divRegla";

		ReglasVO regla = new ReglasVO();
		ReglasVO reglaFind = new ReglasVO();

		ArrayList<ReglasVO> reglas = new ArrayList<ReglasVO>();
		ArrayList<ReglasVO> reglasFind = new ArrayList<ReglasVO>();

		String nombre	 = request.getParameter("descripcion").trim().toUpperCase();
		String id		 = request.getParameter("id").trim();
		String unidad	 = request.getParameter("idUnidad").trim();
		


		regla.setDescripcion(nombre.trim());
		regla.setIdRegla(id);
		regla.setUnidad(unidad);
		regla.setId(id);
		regla.setFuente("-");

		HashMap<String,String> hm = new HashMap<String,String>();
		
		reglasFind = CatalogosBsn.listReglaNombre(regla);

		if (reglasFind != null && reglasFind.size()>0){
			
			reglaFind = new ReglasVO();
			reglaFind.setDescripcion(reglasFind.get(0).getDescripcion());
			reglaFind.setIdRegla(reglasFind.get(0).getIdRegla());
			reglaFind.setUnidad(reglasFind.get(0).getUnidad());
			
			reglas.add(reglaFind);
			
			hm.put("bandera","true");
			request.getSession().setAttribute("addRegla", reglas);
		}else{
			reglas.add(regla);
			request.getSession().setAttribute("addRegla", reglas);
			hm.put("bandera","false");
		}


		request.getSession().setAttribute("fuent" ,CatalogosBsn.getListaFuentes());
		request.getSession().setAttribute("unidades",CatalogosBsn.getListaUnidades());

		forward = mapping.findForward(ruta);

		return forward;
	}

	public ActionForward agregaRegla(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: agregaRegla  ");
		ActionForward forward = new ActionForward();

		String ruta ="agregaRegla";

		request.getSession().removeAttribute("agregaRegla");

		String idReglaL	 		= request.getParameter("idReglaL");
		String fuenteL 			= request.getParameter("fuenteL");
		String estatusReglaL 	= request.getParameter("estatusReglaL");
		String estatusCobroL 	= request.getParameter("estatusCobroL");
		String estatusDispL 	= request.getParameter("estatusDispL");
		String ponderanciaL 	= request.getParameter("ponderanciaL");
		String descripcion  	= request.getParameter("descripcionL");
		String unidadL		  	= request.getParameter("unidadL");

		ReglasVO regla = new ReglasVO();
		regla.setIdRegla(idReglaL);
		regla.setFuente(fuenteL);
		regla.setEstatusRegla(Integer.parseInt(estatusReglaL));
		regla.setEstatusCobro(Integer.parseInt(estatusCobroL));
		regla.setEstatusDispensa(Integer.parseInt(estatusDispL));
		regla.setPonderancia(ponderanciaL);
		regla.setDescripcion(descripcion.trim());
		regla.setUnidad(unidadL);

		if (CatalogosBsn.inserReglas(regla) != -1){
			request.getSession().setAttribute("fuent" ,CatalogosBsn.getListaFuentes());
			request.getSession().setAttribute("catEstatus", CatalogosBsn.getCatalogo(Constantes.CAT_ESTATUS_CAT));
			request.getSession().setAttribute("agregaRegla", CatalogosBsn.getReglas(regla));

		}




		forward = mapping.findForward(ruta);

		return forward;
	}

	public ActionForward actualizaRegla(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: actualizaRegla  ");

		PrintWriter out = null;



		String idReglaL	 		= request.getParameter("idReglaL2");
		String fuenteL 			= request.getParameter("fuenteL2");
		String estatusReglaL 	= request.getParameter("estatusReglaL2");
		String estatusCobroL 	= request.getParameter("estatusCobroL2");
		String estatusDispL 	= request.getParameter("estatusDispL2");
		String ponderanciaL 	= request.getParameter("ponderanciaL2");
		String descripcion  	= request.getParameter("descripcionL2");
		String unidadL		  	= request.getParameter("unidadL2");
		String id		  		= request.getParameter("idL2");


		ReglasVO regla = new ReglasVO();
		regla.setIdRegla(idReglaL);
		regla.setFuente(fuenteL);
		regla.setEstatusRegla(Integer.parseInt(estatusReglaL));
		regla.setEstatusCobro(Integer.parseInt(estatusCobroL));
		regla.setEstatusDispensa(Integer.parseInt(estatusDispL));
		regla.setPonderancia(ponderanciaL);
		regla.setDescripcion(descripcion.trim());
		regla.setUnidad(unidadL);
		regla.setId(id);
		regla.setLike("2");

		out = response.getWriter();

		JSONArray jsonArray = new JSONArray();
		HashMap<String,String> hm = new HashMap<String,String>();


		if 	(CatalogosBsn.updateReglas(regla) != -1){
			hm.put("bandera","true");
			hm.put("mensaje","Se actualizo la regla correctamente");
		}else{
			hm.put("bandera","true");
			hm.put("mensaje","No se actualizo el registro de " + regla.getDescripcion());
		}




		JSONObject jsonObj = JSONObject.fromObject(hm);
		jsonArray.add(jsonObj);

		out.print(jsonArray.toString());
		out.flush();
		out.close();
		return  null;			



	}

	public ActionForward eliminaRegla(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: eliminaRegla  ");
		ActionForward forward = new ActionForward();


		String ruta ="agregaRegla";

		String idReglaL	 		= request.getParameter("idReglaL2");
		String fuenteL 			= request.getParameter("fuenteL2");
		String estatusReglaL 	= request.getParameter("estatusReglaL2");
		String estatusCobroL 	= request.getParameter("estatusCobroL2");
		String estatusDispL 	= request.getParameter("estatusDispL2");
		String ponderanciaL 	= request.getParameter("ponderanciaL2");
		String descripcion  	= request.getParameter("descripcionL2");
		String unidadL		  	= request.getParameter("unidadL2");
		String id		  		= request.getParameter("idL2");



		ReglasVO regla = new ReglasVO();
		regla.setIdRegla(idReglaL);
		regla.setFuente(fuenteL);
		regla.setEstatusRegla(Integer.parseInt(estatusReglaL));
		regla.setEstatusCobro(Integer.parseInt(estatusCobroL));
		regla.setEstatusDispensa(Integer.parseInt(estatusDispL));
		regla.setPonderancia(ponderanciaL);
		regla.setDescripcion(descripcion.trim());
		regla.setUnidad(unidadL);
		regla.setId(id);
		regla.setLike("2");

		request.getSession().removeAttribute("agregaRegla");
		request.getSession().removeAttribute("catEstatus");
		request.getSession().removeAttribute("fuent");

		CatalogosBsn.eliminaReglas(regla);

		request.getSession().setAttribute("agregaRegla", CatalogosBsn.getReglas(regla));
		request.getSession().setAttribute("fuent" ,CatalogosBsn.getListaFuentes());
		request.getSession().setAttribute("catEstatus", CatalogosBsn.getCatalogo(Constantes.CAT_ESTATUS_CAT));

		forward = mapping.findForward(ruta);

		return forward;




	}

	public ActionForward buscarRegla(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: buscarRegla  ");
		request.getSession().removeAttribute("reglasDesc");
		ActionForward forward = new ActionForward();

		String ruta ="modifRegla";

		ReglasForm reglaForm = (ReglasForm) form;

		ReglasVO regla = new ReglasVO();

		regla.setDescripcion(reglaForm.getDescripcion().toUpperCase());
		regla.setLike("5");
		ArrayList<ReglasVO> reglas = CatalogosBsn.listReglaNombre(regla);

		if (reglas != null && reglas.size()>0){
			request.getSession().setAttribute("reglasDesc", reglas);
		}else{

			request.setAttribute(Constantes.ATRIBUTO_MENSAJE_ERROR_GUARDADO_LAYOUT,"No se han encontrado resultados para la busqueda [" + reglaForm.getDescripcion().toUpperCase()+"]");
		}	
		forward = mapping.findForward(ruta.trim());

		return forward;

	}

	public ActionForward inicioModificaRegla(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: inicioModificaRegla  ");
		ActionForward forward = new ActionForward();

		String ruta ="modifRegla";

		forward = mapping.findForward(ruta);

		return forward;

	}

	public ActionForward modificaRegla(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
					throws Exception {

		log.info(" AdmonReglasAction Metodo: eliminaRegla  ");

		request.getSession().removeAttribute("reglasDesc");
		
		ActionForward forward = new ActionForward();
		request.getSession().removeAttribute("muestraRegla");
		ReglasForm reglaForm = (ReglasForm) form;

		String ruta ="muestraRegla";

		ReglasVO regla = new ReglasVO();
		regla.setIdRegla(reglaForm.getIdRegla());

		request.getSession().setAttribute("muestraRegla", CatalogosBsn.getReglas(regla));

		forward = mapping.findForward(ruta);

		request.getSession().setAttribute("fuent" ,CatalogosBsn.getListaFuentes());
		request.getSession().setAttribute("unidades",CatalogosBsn.getListaUnidades());
		request.getSession().setAttribute("catEstatus", CatalogosBsn.getCatalogo(Constantes.CAT_ESTATUS_CAT));
		return forward;




	}




}
